package com.dana.system.manager;

import com.core.constants.CacheConstant;
import com.dana.redis.service.RedisService;
import com.dana.system.domain.exam.Exam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class ExamCacheManager {
    @Autowired
    private RedisService redisService;
    /**
     * 竞赛发布之后,将已经发布的竞赛信息缓存到redis
     * 往redis中添加数据
     * 基本结构:定义一个list数据结构用于缓存竞赛id,再定义一个String用于缓存活动信息
     * 可以根据list中的活动id对应出String中的竞赛基本信息
     */
    public void addCache(Exam exam){
        redisService.leftPushForList(getExamListKey(),exam.getExamId());  //缓存竞赛id,根据竞赛id去查询详细活动信息
        redisService.setCacheObject(getDetailKey(exam.getExamId()),exam); //缓存某一个竞赛的详细信息
    }


    /**
     * 竞赛取消发布之后,将竞赛信息从redis中删除
     * 删除竞赛id列表,删除竞赛详情,删除竞赛列表下的题目列表
     * @param examId 竞赛id
     */
    public void deleteCache(Long examId) {
        redisService.removeForList(getExamListKey(), examId);
        redisService.deleteObject(getDetailKey(examId));
        redisService.deleteObject(getExamQuestionListKey(examId));
    }


    /**
     * 未完成的竞赛
     */
    private String getExamListKey(){
        return CacheConstant.EXAM_UNFINISHED_LIST;
    }

    private String getDetailKey(Long examId){
        return CacheConstant.EXAM_DETAIL+examId;
    }

    private String getExamQuestionListKey(Long examId){
        return CacheConstant.EXAM_QUESTION_LIST+examId;
    }


}
